Custom Uniswap V2 SDK
![npm bundle size (scoped version)](https://img.shields.io/bundlephobia/minzip/custom-uniswap-v2-sdk/latest.svg)
In-depth documentation on original SDK is available at uniswap.org.
Most blockchain with EVM compatibility will use Uniswap solutions to build a decentralized crypto exchange. However,
the original Uniswap SDK has a factory address contract and the init code hash (used for getCreate2Address
etherjs method) is locked in the source code.
The result is that everyone is cloning and creates their own version. And as a result, their own SDK is outdated with
Uniswap latest fixes, upgrade and hard to check what changes with the original Uniswap SDK.
I forked and changes some code, so we can reuse Uniswap SDK without cloning and create our own.
Install
npm i custom-uniswap-v2-sdk
or
yarn add custom-uniswap-v2-sdk
Changes
-
The forked SDK won't export FACTORY_ADDRESS
and INIT_CODE_HASH
anymore.
-
Exported computePairAddress
method will require factory address, and init code hash.
interface ComputePairAddressArg {
factoryAddress: string
initCodeHash: string
tokenA: Token
tokenB: Token
}
export function computePairAddress(arg: ComputePairAddressArg) {
}
- Exported class
Pair
constructor will require factory address, and init code hash.
new Pair(currencyAmountA, tokenAmountB, factoryAddress, initCodeHash)
- Exported class
Pair
static method getAddress
will require factory address, and init code hash.
public static getAddress(tokenA: Token, tokenB: Token, factoryAddress: string, initCodeHash: string): string {
}
- Exported class
Pair
constructor now support custom fees numerator and fees denominator (v3.1.0)
In the Uniswap SDK , feesNumerator
and feesDenominator
are constant JSBI.BigInt(997)
and JSBI.BigInt(1000)
export const _997 = JSBI.BigInt(997)
export const _1000 = JSBI.BigInt(1000)
In PancakeSwap
they change this to support different fee
export const FEES_NUMERATOR = JSBI.BigInt(9975)
export const FEES_DENOMINATOR = JSBI.BigInt(10000)
So in the custom SDK, ThePair
class now can change the fees. If you do not add to the constructor, default fees will be used.
new Pair(currencyAmountA, tokenAmountB, factoryAddress, initCodeHash, feesNumerator, feesDenominator)